The present invention relates to communications in computer networks, and more particularly the present invention relates to a system and method for packet traversal of a network address translation device.
As the use of the Internet has grown in recent years, available internet protocol (IP) addresses for new assignments are rapidly declining. More specifically, the number of internet protocol (IP) addresses currently specified by IP version 4 (IPv4) for assignment to new Internet users is rapidly declining. IPv4 specifies the use of four bytes for each IP address. A newer IP version 6 (IPv6) that specifies 16 byte IP addressing has yet to be implemented for Internet use and is not anticipated to be implemented for the next few years.
As IPv6 is not scheduled for use within the next few years, and as available IP addresses are declining, interim solutions have been developed for increasing the number of computers that can connect to the Internet using the limited number of currently available IP addresses have been developed. One interim solution for providing computer connection to the Internet includes temporary assignment of IP addresses to connecting computers. This solution includes assigning an IP address to a computer during an Internet connection and deassigning the IP address after the Internet connection has ended.
Other interim solutions for providing computer connections to the Internet include the use of network address translation (NAT) techniques. NAT techniques include the translation of an IP address used within one network to a different IP address used within another network. One network is typically designated the internal network and typically includes a local area network (LAN), wide area network (WAN) or the like that might be used by a company, an education institute, a government agency or the like. The other network is typically designated the external network and may be a LAN, a WAN, the Internet or other network type. Current NAT techniques use three sets of internal IP addresses that are reserved for internal network use and are not used on the external network. Typically, a NAT device maps internal IP addresses in outgoing packets to one or more mapped IP addresses and un-maps the mapped IP addresses in incoming packets back into internal IP addresses. For example, as a packet leaves an internal network (e.g., a company LAN), the packet passes through the NAT device, which maps the internal IP address (e.g., 10.0.0.1) to the company's mapped IP address (e.g., 198.60.42.12).
NAT devices also typically map internal ports used by an internal computer on an internal network to external ports (sometimes referred to as mapped) used on an external network. Port translation is typically referred to as network port translation (NPT). For convenience, the term NAT as used herein includes NPT.
While NAT devices are configured to permit external network connections for a number of internal computers via a single mapped IP address, one or more of these internal computers may not know that they are “behind” a NAT device (i.e., a NAT device is communicatively coupled between the internal computers and external computers) or may not know the characteristics of the NAT device that internal computers are behind. If an internal computer does not know whether it is behind a NAT device or does not know the characteristics of the NAT device that the internal computer is behind, the internal computer may be hampered in receiving communications (e.g., packets) from external computers. For example, packets sent to the internal computer from the external computer may be dropped, as the internal computer may not be able to inform the external computer of the characteristics of the NAT device. More specifically, if the external computer uses a port that is not accepted by the NAT device, packets sent by the external computer may be dropped by the NAT device. That is, the packets will not traverse the NAT device. If alternatively, the internal computer can communicate to the external computer the characteristics of the NAT device that the internal computer is behind, then the external computers can use the information to send packets having appropriately selected IP addresses and port numbers that will permit the packets to be passed by the NAT device to the internal computer.
Thus, there is a need for a system and a method for characterizing NAT devices to provide for improved packet traversal across the NAT devices.